package com.compasudea.polla.persistencia.dao;

import java.util.Collection;

import com.compasudea.polla.negocio.dto.PartidoDTO;
import com.compasudea.polla.negocio.dto.ResultadoDTO;
import com.compasudea.polla.negocio.dto.UsuarioDTO;

public interface PartidoDAO {
	
	/**
	 * Permite obtener la informacion de los partidos de un grupo.
	 * @param grupo Grupo al que pertenecen los partidos.
	 * @return Lista de partidos para el grupo.
	 */
	Collection<PartidoDTO> getPartidosPorGrupo(String grupo);
	
	/**
	 * Permite obtener el resultado asociado a un partido para un participante.
	 * @param partido Partido del que se desea buscar el resultado.
	 * @param user Usuario en sesion.
	 * @return Resultado en caso de que ya haya sido registrado.
	 */
	ResultadoDTO getResultado(PartidoDTO partido, UsuarioDTO user);
	
	
	/**
	 * Permite crear el resultado de un partido especifico ingresado por un usuario.
	 * @param partido DTO que contiene tanto la informacion del partido como del resultado.
	 * @param user Usuario que ingresa el resultado.
	 */
	void guardarResultadoPartido(PartidoDTO partido, UsuarioDTO user);
	
	/**
	 * Permite actualizar el resultado de un partido especifico ingresado por un usuario.
	 * @param partido DTO que contiene tanto la informacion del partido como del resultado.
	 * @param user Usuario que ingresa el resultado.
	 */
	void actualizarResultadoPartido(PartidoDTO partido, UsuarioDTO user);
	
	/**
	 * Permite eliminar el resultado de un partido especifico ingresado por un usuario.
	 * @param partido DTO que contiene tanto la informacion del partido como del resultado.
	 * @param user Usuario que ingresa el resultado.
	 */
	void eliminarResultadoPartido(PartidoDTO partido, UsuarioDTO user);
	
	
	/**
	 * Permite almacenar el resultado de los partidos correspondientes a un grupo que son ingresados
	 *  por un usuario.
	 * @param partidos Lista de partidos a guardar
	 * @param user 
	 */
//	void guardarResultadosGrupo(Collection<PartidoDTO> partidos, UsuarioDTO user);
}
